#pragma once


#include "base/core/singleton.h"
#include "base/core/object_pool.h"
#include <map>
#include "Npc.h"
#include "base/core/point3.h"


class NpcMgr : public ManualSingleton < NpcMgr >
{
	friend class ManualSingleton < NpcMgr > ;
	//typedef std::unordered_map<CharIDType, Npc*> mapNpc;
	//typedef std::unordered_map<CharIDType, uint64_t> mapMonsterNpc;
public:
	NpcMgr();
	virtual ~NpcMgr();
public:
	bool Init();
	bool UnInit();
	bool Update(uint64_t tick);
	//Npc* CreateNpc(uint32_t npcId, uint32_t sceneId, Point3<float>& bornPos);
	//void RecyleNpc(Npc* pNpc);
	//Npc* GetNpc(CharIDType npcCid);
	//void NpcDeadHandle(CharIDType npcCid);
public:
	//void OnNpcFightCreateMonster(CharIDType npcCid);
	//void MonterDeadEndNpcFight(CharIDType monsterCid);
protected:
	//mapNpc m_mapNpc; //管理所有的NPC
	//mapMonsterNpc m_monsterToNpc;
};

#define g_MakeNpcMgr() (NpcMgr::Instance())
#define g_GetNpcMgr() (NpcMgr::GetInstance())
#define g_DelNpcMgr() (NpcMgr::Destroy())
